package com.linyaonan.leetcode.easy._507;

/**
 * 对于一个 正整数，如果它和除了它自身以外的所有正因子之和相等，我们称它为“完美数”。
 * <p>
 * 给定一个 整数 n， 如果他是完美数，返回 True，否则返回 False
 * <p>
 *  
 * <p>
 * 示例：
 * <p>
 * 输入: 28
 * 输出: True
 * 解释: 28 = 1 + 2 + 4 + 7 + 14
 *  
 * <p>
 * 提示：
 * <p>
 * 输入的数字 n 不会超过 100,000,000. (1e8)
 *
 * @author: Lin
 * @date: 2020/1/1
 */
public class PerfectNumber {

    public boolean checkPerfectNumber(int num) {
        if (num % 2 == 1) {
            return false;
        }
        int tmp = 1;
        for (int i = 2; i < num / i; i++) {
            if (num % i == 0) {
                tmp += i + num / i;
            }
        }

        return tmp == num;
    }
}
